﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using PloobsEngine.Light;
using PloobsEngine.SceneControl;
using PloobsEngine.Cameras;
using PloobsEngine.Modelo;


namespace PloobsEngine.Material
{
    public interface IMaterial
    {
        void Serialize(System.Xml.XmlTextWriter textWriter);
        void DeSerialize(System.Xml.XmlNode node,EngineStuff engine, IModelo model);
        void PreDrawnPhase(IWorld mundo, GameTime gt, IObject obj, ICamera cam, IList<ILight> lights, IRenderHelper render);
        void PosDrawnPhase(GameTime gt, IObject obj, ICamera cam, IList<ILight> lights, IRenderHelper render);
        void Drawn(GameTime gt ,IObject obj, ICamera cam , IList<ILight> lights,IRenderHelper render);
        void Update(GameTime gametime, IObject obj, IList<ILight> lights);
        IShader Shadder { set; get; }
        MaterialType MaterialType { get; set; }
        bool AffectedByShadow { set; get; }        
        //IPhysicProperty PhysicProperty { set; get; }
    }
    public enum MaterialType 
    {
        DEFERRED, FORWARD
    }
}
